<?php

require_once 'EditBlogpostView.php';
require_once 'BlogpostsHandler.php';
require_once 'LoginHandler.php';

class EditBlogpostController{

	private $message = "";
	private $ret = "";
	private $error = FALSE;	
	
	
	public function DoControll(Database $db){
		$editBlogpostsView = new EditBlogpostView();
		$blogpostsHandler = new BlogpostsHandler($db);
		$loginHandler = new LoginHandler($db);
		$id = $_GET['id'];
		
		
		
		//Endast om admin är inloggad ska formuläret för att redigera blogginlägg synas.
		//TODO hämta ett specifikt inlägg till textrutorna.
		$blogposts = $blogpostsHandler->GetSpecificBlogPost($id);
		if($loginHandler->UserIsAdmin() === true){
			$this->ret .= $editBlogpostsView->EditBlogPost($blogposts);
		}
		
		
		if($editBlogpostsView->TriedToPost()){
			
			//Kollar så att administratören har skrivit någon titel.
			if($blogpostsHandler->titleIsEmpty($editBlogpostsView->GetTitle())){
				$this->message .=$editBlogpostsView->Message(EditBlogpostView::TITLE_IS_EMPTY);
				$this->error = TRUE;
			}
			//Kollar så att admin har skrivit något inlägg.
			if($blogpostsHandler->postIsEmpty($editBlogpostsView->GetPost())){
				$this->message .=$editBlogpostsView->Message(EditBlogpostView::POST_IS_EMPTY);
				$this->error = TRUE;
			}
			//Kollar så att admin har skrivit författare.
			if($blogpostsHandler->authorIsEmpty($editBlogpostsView->GetAuthor())){
				$this->message .=$editBlogpostsView->Message(EditBlogpostView::AUTHOR_IS_EMPTY);
				$this->error = TRUE;
			}
			//Validerar så att ingen html eller javascript går igenom.
			if($blogpostsHandler->validateTitle($editBlogpostsView->GetTitle()) === FALSE){
				$this->message .=$editBlogpostsView->Message(EditBlogpostView::NO_HACK);
				$this->error = TRUE;
			}
			
			if($blogpostsHandler->validatePost($editBlogpostsView->GetPost()) === FALSE){
				$this->message .=$editBlogpostsView->Message(EditBlogpostView::NO_HACK);
				$this->error = TRUE;
			}
			
			if($blogpostsHandler->validateAuthor($editBlogpostsView->GetAuthor()) === FALSE){
				$this->message .=$editBlogpostsView->Message(EditBlogpostView::NO_HACK);
				$this->error = TRUE;
			}
			//TODO fixa en sql som updaterar i blogposthandler.
			if($this->error === FALSE){
				if($blogpostsHandler->UpdateBlogpost($editBlogpostsView->GetTitle(), $editBlogpostsView->GetPost(), $editBlogpostsView->GetAuthor(), $editBlogpostsView->GetId())){ //skicka in $blogpost
					$this->message .=$editBlogpostsView->Message(EditBlogpostView::BLOGPOST_UPDATED);
				}
			}
		}
		return $this->ret . $this->message;
		
	}
}
